package com.itheima.reggie.common;

import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.module.SimpleModule;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;

import java.math.BigInteger;

import static com.fasterxml.jackson.databind.DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES;
//自定义对象映射器

/***
 * 对象映射器: 基于Jackson将java对象转换为json,或者将JSON转换为java对象
 * 将json解析为java对象的过程称为[从JSON反序列化Java对象]
 * 从Java对象生成JSON的过程称为 [序列化Java对象到JSON]
 */
public class JacksonObjectMapper extends ObjectMapper {
	public JacksonObjectMapper(){
		super();
		
		//接受到未知属性的时候不报告异常
		this.configure(FAIL_ON_UNKNOWN_PROPERTIES,false);
		
	//	反序列化时,属性不存在的兼容处理
		this.getDeserializationConfig().withoutFeatures(FAIL_ON_UNKNOWN_PROPERTIES);
		
		
	//	自定义转义规则
		SimpleModule simpleModule = new SimpleModule()
				.addSerializer(BigInteger.class, ToStringSerializer.instance)//将BigInteger转换为String
				.addSerializer(Long.class, ToStringSerializer.instance);//将Long类型转换为String类型
		this.registerModule(simpleModule);
	}
}
